博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2.3动态调用报 No result defined for action 错误
阅读量:5364 次
发布时间:2019-06-15

本文共 2290 字,大约阅读时间需要 7 分钟。

struts 2.3.16  採用动态调用发现不工作报404 not found,网上查找原因:

1.由于:struts2中默认不同意使用DMI

所以:须要在配置文件里打开: <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

改动发现报No result defined for action 

2.错误信息来看,是说未定义result。

你有没有配置拦截器<interceptor-ref name="validation"/>?

假设有的话,去掉全部的拦截器。

包含这个缺省的拦截器栈:<default-interceptor-ref name="defaultStack"/>

struts调用action的3种方式:(引至互联网)

动态方法调用在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action相应多个请求的处理,以免Action太多第一种方式:指定method属性这样的方式我们前面已经用到过,相似以下的配置就能够实现
redirect
/WEB-INF/JspPage/chapter2/plaintext.jsp
另外一种方式:感叹号方式(须要开启),官网不推荐使用这样的方式,建议大家不要使用.用这样的方式须要先开启一个开关
将此常量设置为true,这样的方式才干使用,使用见演示样例Actionpackage chapter3.action;public class Chapter3Action {public String result1(){ return "result1";}public String result2(){ return "result2";}} Jsp中訪问方式 result1
result2
假设配置了后缀,必须这样写:/chapter4/chapter4Action!create.actionXML中配置方式
/WEB-INF/JspPage/chapter3/result1.jsp
/WEB-INF/JspPage/chapter3/result2.jsp
/WEB-INF/JspPage/chapter3/chapter3.jsp
第三种方式:通配符方式(官网推荐使用)首先得关闭开关
这一种方式是由第一种转变过来的,我们能够看到,第一种方式有非常多反复的代码,那么我们能够进行变形,看以下的代码
/…/test.jsp
chapter3_*这里的*就是你呆会要匹配的字符串,即你在后面的请求中得这样写http://...../ chapter3_create 或 http://...../ chapter3_update注意,这时你action中必须有create和update方法与之匹配,甚至还能够这样匹配
/…/{1}.jsp
可是这时一定要有相应的JSP页面存在,而且相应的路径不能错,这就对我们的命名进行了强制性的规定,一定要规范.课堂演示样例:Actionpublic class Chapter4Action extends ActionSupport {public String list(){ return "list";}public String create(){ return "create";}public String index(){ return "index";}} XML:
/WEB-INF/JspPage/chapter4/chapter4_{1}.jsp
关于通配符匹配的优先权:
(1)假设struts.xml里面有相应的action name ,就算它有其它通配符匹配的,都优先相应全然同样的。
比方 有一个 action name 是 "user_add"  另一个是 "user_*"。

如今,有一个请求是 "user_add.action "。那么。它会优先匹配"user_add " 。

(2)假设一个action name相应于两个带通配符的action name 那么。须要看这个配置谁在前面,它匹配写在前面的
比方 有一个 action name 是 "*_*"  另一个是 "user_*" 。如今。有一个请求是 "user_add.action ",.那么它会优先匹配写在前面的那个action
(3)不论什么带"*"的action name 优先权都是一样的。不是说带一个"*"的优先权就比带两个"*" 的高.
总结:因此我们应该把具有含有最多通配符的Acton配置放在最后,否则Struts2一一匹配全部的Action,这会减少程序的效率。

转载于:https://www.cnblogs.com/yfceshi/p/7137748.html

你可能感兴趣的文章
vue tabNav 点击
查看>>
cmd命令
查看>>
Storm系列(十六)架构分析之Executor-Bolt
查看>>
vue项目中使用mui
查看>>
Swift - 值类型和引用类型的区别
查看>>
mfc学习之路--如何删除通过控件新增的变量
查看>>
利用Java.lang.Process和ProcessBuilder创建本地应用程序进程
查看>>
Android学习笔记(三四):再谈Intent(上)-一些知识
查看>>
KVO和KVC
查看>>
java int 转 String 类型
查看>>
省级下拉显示
查看>>
兄弟2820
查看>>
jmeter笔记(7)--参数化--用户定义的变量
查看>>
第二节:1_C#中的委托的使用和讲解(转)
查看>>
PHP 错误处理机制
查看>>
Linux 脚本编写
查看>>
Winform 2.0中的Strip控件
查看>>
可枚举属性和不可枚举属性(for...in循环和Objec.keys()和Object.getOwnPropertyNames())...
查看>>
LeetCode-24. Swap Nodes in Pairs
查看>>
BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
查看>>